package pe.edu.sisclas.controller;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;

import org.springframework.beans.factory.annotation.Autowired;

import pe.edu.sisclas.model.domain.Comentario;
import pe.edu.sisclas.model.domain.Incidencia;
import pe.edu.sisclas.model.service.ComentarioService;
import pe.edu.sisclas.model.service.exception.ServiceException;

public class ComentarioController implements java.io.Serializable {

	private static final long serialVersionUID = 1L;

	@Autowired
	private UsuarioController usuarioController;

	@Autowired
	private ComentarioService comentarioService;

	private Incidencia incidenciaElegida;
	private Comentario comentario = new Comentario();
	private List<Comentario> comentarios = new ArrayList<Comentario>();

	public Incidencia getIncidenciaElegida() {
		return incidenciaElegida;
	}

	public void registrarComentario() {
		comentario.setFechaRegistro(new Date());
		comentario.setIncidencia(this.incidenciaElegida);
		comentario.setUsuario(this.usuarioController.getUsuario());

		if (comentario.getDescripcion().isEmpty()) {
			mensaje("Advertencia", "Ingrese alg\u00fan comentario");
			return;
		}

		try {
			comentarioService.guardarComentario(comentario);
		} catch (ServiceException e) {
			e.printStackTrace();
			mensaje("Error", e.getMessage());
			return;
		}
		this.comentario = new Comentario();
		mensaje("Informaci\u00f3n", "Comentario registrado");
	}

	public void setIncidenciaElegida(Incidencia incidenciaElegida) {
		this.incidenciaElegida = incidenciaElegida;
	}

	public Comentario getComentario() {
		return comentario;
	}

	public void setComentario(Comentario comentario) {
		this.comentario = comentario;
	}

	public UsuarioController getUsuarioController() {
		return usuarioController;
	}

	public void setUsuarioController(UsuarioController usuarioController) {
		this.usuarioController = usuarioController;
	}

	public List<Comentario> getComentarios() {
		try {
			this.comentarios = this.comentarioService
					.obtenerComentariosPorIncidencia(incidenciaElegida);
		} catch (ServiceException e) {
			e.printStackTrace();
			mensaje("Error", e.getMessage());
		}
		return comentarios;
	}

	private void mensaje(String ttl, String msj) {
		FacesContext.getCurrentInstance().addMessage(null,
				new FacesMessage(ttl, msj));
	}

}
